﻿using RXY_Mall.Application.Order.Dto;
using RXY_Mall.Core;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace RXY_Mall.Application.Return
{
    public interface IReturnService
    {

        #region 退货货
        /// <summary>
        /// 退换货列表
        /// </summary>
        /// <param name="return_no">退换货号</param>
        /// <param name="return_type">退换货类型</param>
        /// <param name="return_reason">退换货原因</param>
        /// <param name="start_date">开始时间</param>
        /// <param name="end_date">结束时间</param>
        /// <param name="return_status">退换货状态</param>
        /// <param name="page_index">页码</param>
        /// <param name="page_size">页数</param>
        /// <returns></returns>
        Response<IPagedList<GetOrderReturnsOutput>> GetReturns(string return_no, string contact_mobile, string shop_name, int return_type, int return_reason, string start_date, string end_date, int return_status, int page_index = 1, int page_size = 20, int shop_id = -1);
        
        /// <summary>
        /// 退换货详情
        /// </summary>
        /// <param name="return_id"></param>
        /// <param name="shop_id"></param>
        /// <returns></returns>
        Task<Response<GetReturnOutput>> GetReturn(int return_id, int shop_id = 0);

        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Response<bool>> UpdateReturnAudit(UpdateReturnAuditInput input);

        /// <summary>
        /// 退款
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Response<bool>> UpdateReturnRefund(UpdateReturnRefundInput input);

        /// <summary>
        /// 退换货-发货
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Response<bool>> UpdateReturnShipment(UpdateReturnShipmentInput input);
        #endregion

    }
}
